// 函数堆栈处理
var arr = ['zce', 'alishi']

function foo(obj){
    obj[0] = 'zoe' // 'zoe', 'alishi'
    obj = ['拉钩教育']
    obj[1] = '大前端'
    console.log(obj) // ['拉钩教育', '大前端']
}
foo(arr)
console.log(arr) // ['zoe', 'alishi']

// 函数创建
// -- 可以将函数名称当成是变量
// -- 函数本身也是一个对象， 创建时会有一个内存地址，空间内存放的就是函数体


// 函数执行
// -- 函数执行时会有私有的执行上下文，里面又个AO，用来管理这个上下文当中的变量

// 函数执行步骤
// 1、确定作用域链
// 2、确定 this --> window
// 3、初始化arguments
// 4、行参赋值
// 5、变量提升
// 6、执行代码